﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SurfaceCardsBoardLibrary.Interfaces
{
    /// <summary>
    /// Allow some evaluations methods to implement rules in your game
    /// </summary>
    public interface IEvaluate
    {
        /// <summary>
        /// Evaluate the value of one card of your game
        /// </summary>
        /// <param name="card">Object who implements ICard</param>
        /// <returns>int value who indicates the value for this game</returns>
        int Evaluate(ICard card);
        /// <summary>
        /// Evaluate the most valuable ICard in a collection
        /// </summary>
        /// <param name="cards">Collection of object who implements ICard</param>
        /// <returns>ICard with the bigger value for this game</returns>
        ICard Evaluate(IEnumerable<ICard> cards);
        /// <summary>
        /// Evaluate the value of one IDeck
        /// </summary>
        /// <param name="deck">a IDeck who contains some ICard</param>
        /// <returns>int value who indicates the value of the deck for this game</returns>
        int Evaluate(IDeck deck);
        /// <summary>
        /// Evaluate the most valuable IDech in a collection
        /// </summary>
        /// <param name="decks">Collection of object who implements IDeck</param>
        /// <returns>IDeck with the bigger value for this game</returns>
        IDeck Evaluate(IEnumerable<IDeck> decks);
    }
}
